home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SOCKET C Library Procedures SOCKET
-
-
-
- NNAAMMEE
- socket - create an endpoint for communication
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
- ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>
-
- ss == ssoocckkeett((ddoommaaiinn,, ttyyppee,, pprroottooccooll))
- iinntt ss,, ddoommaaiinn,, ttyyppee,, pprroottooccooll;;
-
- DDEESSCCRRIIPPTTIIOONN
- _S_o_c_k_e_t creates an endpoint for communication and returns a
- descriptor.
-
- The _d_o_m_a_i_n parameter specifies a communications domain
- within which communication will take place; this selects the
- protocol family which should be used. The protocol family
- generally is the same as the address family for the
- addresses supplied in later operations on the socket. These
- families are defined in the include file <_s_y_s/_s_o_c_k_e_t._h>.
- The currently understood formats are
-
- PF_UNIX (UNIX internal protocols),
- PF_INET (ARPA Internet protocols),
- PF_NS (Xerox Network Systems protocols), and
- PF_IMPLINK (IMP "host at IMP" link layer).
-
- The socket has the indicated _t_y_p_e, which specifies the
- semantics of communication. Currently defined types are:
-
- SOCK_STREAM
- SOCK_DGRAM
- SOCK_RAW
- SOCK_SEQPACKET
- SOCK_RDM
-
- A SOCK_STREAM type provides sequenced, reliable, two-way
- connection based byte streams. An out-of-band data
- transmission mechanism may be supported. A SOCK_DGRAM
- socket supports datagrams (connectionless, unreliable mes-
- sages of a fixed (typically small) maximum length). A
- SOCK_SEQPACKET socket may provide a sequenced, reliable,
- two-way connection-based data transmission path for
- datagrams of fixed maximum length; a consumer may be
- required to read an entire packet with each read system
- call. This facility is protocol specific, and presently
- implemented only for PF_NS. SOCK_RAW sockets provide access
- to internal network protocols and interfaces. The types
- SOCK_RAW, which is available only to the super-user, and
- SOCK_RDM, which is planned, but not yet implemented, are not
- described here.
-
-
-
-
- Sprite v1.0 May 23, 1986 1
-
-
-
-
-
-
- SOCKET C Library Procedures SOCKET
-
-
-
- The _p_r_o_t_o_c_o_l specifies a particular protocol to be used with
- the socket. Normally only a single protocol exists to sup-
- port a particular socket type within a given protocol fam-
- ily. However, it is possible that many protocols may exist,
- in which case a particular protocol must be specified in
- this manner. The protocol number to use is particular to
- the "communication domain" in which communication is to take
- place; see _p_r_o_t_o_c_o_l_s(3N).
-
- Sockets of type SOCK_STREAM are full-duplex byte streams,
- similar to pipes. A stream socket must be in a _c_o_n_n_e_c_t_e_d
- state before any data may be sent or received on it. A con-
- nection to another socket is created with a _c_o_n_n_e_c_t(2) call.
- Once connected, data may be transferred using _r_e_a_d(2) and
- _w_r_i_t_e(2) calls or some variant of the _s_e_n_d(2) and _r_e_c_v(2)
- calls. When a session has been completed a _c_l_o_s_e(2) may be
- performed. Out-of-band data may also be transmitted as
- described in _s_e_n_d(2) and received as described in _r_e_c_v(2).
-
- The communications protocols used to implement a SOCK_STREAM
- insure that data is not lost or duplicated. If a piece of
- data for which the peer protocol has buffer space cannot be
- successfully transmitted within a reasonable length of time,
- then the connection is considered broken and calls will
- indicate an error with -1 returns and with ETIMEDOUT as the
- specific code in the global variable errno. The protocols
- optionally keep sockets "warm" by forcing transmissions
- roughly every minute in the absence of other activity. An
- error is then indicated if no response can be elicited on an
- otherwise idle connection for a extended period (e.g. 5
- minutes). A SIGPIPE signal is raised if a process sends on
- a broken stream; this causes naive processes, which do not
- handle the signal, to exit.
-
- SOCK_SEQPACKET sockets employ the same system calls as
- SOCK_STREAM sockets. The only difference is that _r_e_a_d(2)
- calls will return only the amount of data requested, and any
- remaining in the arriving packet will be discarded.
-
- SOCK_DGRAM and SOCK_RAW sockets allow sending of datagrams
- to correspondents named in _s_e_n_d(2) calls. Datagrams are
- generally received with _r_e_c_v_f_r_o_m(2), which returns the next
- datagram with its return address.
-
- An _f_c_n_t_l(2) call can be used to specify a process group to
- receive a SIGURG signal when the out-of-band data arrives.
- It may also enable non-blocking I/O and asynchronous notifi-
- cation of I/O events via SIGIO.
-
- The operation of sockets is controlled by socket level
- _o_p_t_i_o_n_s. These options are defined in the file
- <_s_y_s/_s_o_c_k_e_t._h>. _S_e_t_s_o_c_k_o_p_t(2) and _g_e_t_s_o_c_k_o_p_t(2) are used to
-
-
-
- Sprite v1.0 May 23, 1986 2
-
-
-
-
-
-
- SOCKET C Library Procedures SOCKET
-
-
-
- set and get options, respectively.
-
- RREETTUURRNN VVAALLUUEE
- A -1 is returned if an error occurs, otherwise the return
- value is a descriptor referencing the socket.
-
- EERRRROORRSS
- The _s_o_c_k_e_t call fails if:
-
- [EPROTONOSUPPORT] The protocol type or the specified pro-
- tocol is not supported within this
- domain.
-
- [EMFILE] The per-process descriptor table is
- full.
-
- [ENFILE] The system file table is full.
-
- [EACCESS] Permission to create a socket of the
- specified type and/or protocol is
- denied.
-
- [ENOBUFS] Insufficient buffer space is available.
- The socket cannot be created until suf-
- ficient resources are freed.
-
- SSEEEE AALLSSOO
- accept(2), bind(2), connect(2), getsockname(2), get-
- sockopt(2), ioctl(2), listen(2), read(2), recv(2),
- select(2), send(2), shutdown(2), socketpair(2), write(2)
- ``An Introductory 4.3BSD Interprocess Communication
- Tutorial.'' (reprinted in UNIX Programmer's Supplementary
- Documents Volume 1, PS1:7) ``An Advanced 4.3BSD Interprocess
- Communication Tutorial.'' (reprinted in UNIX Programmer's
- Supplementary Documents Volume 1, PS1:8)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 May 23, 1986 3
-
-
-
-